In a computer network employing a reliable streaming protocol for data communication, also known as guaranteed delivery streaming protocols, data that is not successfully transmitted from one computer to another over a network must be retransmitted. Often this retransmission, however, is not performed in an optimal fashion. The sender must determine when to retransmit data in a way that uses network resources efficiently. If the sender retransmits data too aggressively, it will be placing more data packets onto the network than necessary, which may hurt network performance. Alternatively, if the sender retransmits data too conservatively, it may not take advantage of available network resources, and the receiver may wait unnecessarily.
Currently, retransmission schemes use heuristics to balance these tradeoffs, however, these schemes use a one-size-fits-all approach. As a result, inefficiencies arise that vary from connection to connection.